From d8df197489e7466414857164850b8c93c187bd21 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Timm=20B=C3=A4der?= Date: Sat, 24 Aug 2019 10:35:53 +0200 Subject: [PATCH] cssprovider: Don't lookup on empty css providers This should not have a huge performance impact, but debugging is easier if we don't lookup in empty css providers. --- gtk/gtkcssprovider.c | 3 +++ gtk/gtkcssselector.c | 6 ++++++ gtk/gtkcssselectorprivate.h | 2 ++ 3 files changed, 11 insertions(+) diff --git a/gtk/gtkcssprovider.c b/gtk/gtkcssprovider.c index 32a098dc44..15279c039e 100644 --- a/gtk/gtkcssprovider.c +++ b/gtk/gtkcssprovider.c @@ -527,6 +527,9 @@ gtk_css_style_provider_lookup (GtkStyleProvider *provider, int i; GPtrArray *tree_rules; + if (_gtk_css_selector_tree_is_empty (priv->tree)) + return; + tree_rules = _gtk_css_selector_tree_match_all (priv->tree, matcher); if (tree_rules) { diff --git a/gtk/gtkcssselector.c b/gtk/gtkcssselector.c index 3a1b95dbf7..89ec18194f 100644 --- a/gtk/gtkcssselector.c +++ b/gtk/gtkcssselector.c @@ -1885,6 +1885,12 @@ gtk_css_selector_tree_get_change (const GtkCssSelectorTree *tree, return change; } +gboolean +_gtk_css_selector_tree_is_empty (const GtkCssSelectorTree *tree) +{ + return tree == NULL; +} + GtkCssChange _gtk_css_selector_tree_get_change_all (const GtkCssSelectorTree *tree, const GtkCssMatcher *matcher) diff --git a/gtk/gtkcssselectorprivate.h b/gtk/gtkcssselectorprivate.h index 64eb13d709..6f35917c6e 100644 --- a/gtk/gtkcssselectorprivate.h +++ b/gtk/gtkcssselectorprivate.h @@ -47,6 +47,8 @@ GtkCssChange _gtk_css_selector_tree_get_change_all (const GtkCssSelectorTree * const GtkCssMatcher *matcher); void _gtk_css_selector_tree_match_print (const GtkCssSelectorTree *tree, GString *str); +gboolean _gtk_css_selector_tree_is_empty (const GtkCssSelectorTree *tree) G_GNUC_CONST; + GtkCssSelectorTreeBuilder *_gtk_css_selector_tree_builder_new (void); -- 2.30.2